import HTTP from '@/libs/http'

class InitApi extends HTTP {
  /**
   * @description: 网格人员统计
   * @author lsr
   * @date 2021.03.26
   */
  count() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/count_grid'
    })
  }

  /**
   * @description: 身份证识别
   * @author lsr
   * @date 2021.03.15
   * @param {String} imgUrl 身份证照片
   */
  getPersonInfo({ imgUrl }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/getPersonInfo',
      params: {
        imgUrl
      }
    })
  }

  /**
   * @description: 提取特征值
   * @author lsr
   * @date 2021.03.26
   * @param {String} path  图片地址
   */
  residentFeature({ path }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/feature',
      params: {
        path
      }
    })
  }

  /**
   * @description: 人员判重
   * @author lsr
   * @date 2021.03.16
   * @param {String} personCode  人口编码
   * @param {String} regionCode  所属区域编码
   * @param {String} idCard  身份证号
   */
  residentCheck({ personCode, regionCode, idCard }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/check',
      params: {
        personCode,
        regionCode,
        idCard
      }
    })
  }

  /**
   * @description: 党组织判重
   * @author zlr
   * @date 2021.11.29
   * @param {String} partyOrganizationName  党组织名称
   * @param {String} partyOrganizationCode  党组织编码
   */
  partyOrganizationCheck({ partyOrganizationName, partyOrganizationCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/partyOrg/check',
      params: {
        partyOrganizationName,
        partyOrganizationCode
      }
    })
  }

  /**
   * @description：车辆判重
   * @author lsr
   * @date 2021.03.16
   * @param {String} regionCode 社区编码
   * @param {String} carCode 车辆编码
   * @param {String} carNo 车牌号
   */
  carCheck({ regionCode, carCode, carNo }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/car/check',
      params: {
        regionCode,
        carCode,
        carNo
      }
    })
  }

  /**
   * @description：单位判重
   * @author lsr
   * @date 2021.03.16
   * @param {String} companyCode 单位编码
   * @param {String} companyName 单位名称
   * @param {String} licenseNum 营业执照
   * @param {String} regionCode 社区编码
   */
  companyCheck({ companyCode, companyName, licenseNum, regionCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/company/check',
      params: {
        companyCode,
        companyName,
        licenseNum,
        regionCode
      }
    })
  }

  /**
   * @description：房屋判重
   * @author lsr
   * @date 2021.03.26
   * @param {String} houseCode 房屋编码
   * @param {String} buildCode 楼栋编码
   * @param {String} unitCode 单元编码
   * @param {String} floorCode 楼层编码
   * @param {String} houseName 房屋名称
   * @param {String} roomNo 房间号
   */
  houseCheck({ houseCode, buildCode, unitCode, floorCode, houseName, roomNo }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/house/check',
      params: {
        houseCode,
        buildCode,
        unitCode,
        floorCode,
        houseName,
        roomNo
      }
    })
  }
}

class BaseInfoApi extends HTTP {
  /**
   * @description: 党组织采集
   * @author zlr
   * @date 2021.11.30
   * @param {Object} basePartyOrganization 党组织基本信息
   * @param {Array} basePartyOrganizationCompany 党组织单位信息
   */
  partyOrganizationSave({ basePartyOrganization, basePartyOrganizationCompany }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/partyOrg/save',
      data: {
        basePartyOrganization,
        basePartyOrganizationCompany
      }
    })
  }

  /**
   * @description: 人口采集
   * @author lsr
   * @date 2021.03.09
   * @param {String} residentType     人口管理类型
   * @param {String} personImage      图片url
   * @param {String} personName       姓名
   * @param {String} formerName       曾用名
   * @param {String} idType           证件类型
   * @param {String} idCard           证件号码
   * @param {String} sex              性别
   * @param {String} nationality      民族
   * @param {String} birthPlace       籍贯
   * @param {String} birthday         出生日期
   * @param {String} marriage         婚姻状况
   * @param {String} politic          政治面貌
   * @param {String} edulevel         文化程度/学历
   * @param {String} religion         宗教信仰
   * @param {String} professionType   职业类别
   * @param {String} profession       职业
   * @param {String} workPlace        工作单位
   * @param {String} healthCondition  健康情况
   * @param {String} phone            联系方式
   * @param {String} livingWay        居住方式
   * @param {String} regionCode       所属区域
   * @param {String} address          现住详址
   * 补充信息
   * @param {String} household        户籍地
   * @param {String} householdAddress 户籍详址
   * 补充信息 - 本地户籍人口
   * @param {String} identification   人户分离标识
   * @param {String} houseId          户号
   * @param {String} householdType    户口性质
   * @param {String} ownerRelationship        与户主关系
   * @param {String} ownerIdType              户主证件类型
   * @param {String} ownerIdCard              户主证件号
   * 补充信息 - 非本地户籍人口
   * @param {String} flowCause              流入原因
   * @param {String} flowDate              流入日期
   * @param {String} cardType              办证类型
   * @param {String} cardNumber              办证号码
   * @param {String} registerDate              办理日期
   * @param {String} expireDate              到期日期
   * @param {String} residenceType              住所类型
   * 补充信息 - 境外来华停（居）留人员
   * @param {String} lastName              外文姓
   * @param {String} firstName              外文名
   * @param {String} citizenship              国籍（地区）
   * @param {String} purpose              来华目的
   * @param {String} arriveTime              抵达日期
   * @param {String} leaveTime              预计离开日期
   * 房屋信息
   * @param {array} houseInfo           绑定房屋信息
   */
  residentSave({
    residentType,
    personImage,
    personName,
    formerName,
    idType,
    idCard,
    sex,
    nationality,
    birthPlace,
    birthday,
    marriage,
    politic,
    edulevel,
    religion,
    professionType,
    profession,
    workPlace,
    healthCondition,
    phone,
    livingWay,
    regionCode,
    address,
    // 补充信息
    household,
    householdAddress,
    // 本地户籍人口
    identification,
    houseId,
    householdType,
    ownerRelationship,
    ownerIdType,
    ownerIdCard,
    // 非本地户籍人口
    flowCause,
    flowDate,
    cardType,
    cardNumber,
    registerDate,
    expireDate,
    residenceType,
    // 境外来华停（居）留人员
    lastName,
    firstName,
    citizenship,
    purpose,
    arriveTime,
    leaveTime,
    // 房屋信息
    houseInfo
  }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/approve/resident/save',
      data: {
        residentType,
        personImage,
        personName,
        formerName,
        idType,
        idCard,
        sex,
        nationality,
        birthPlace,
        birthday,
        marriage,
        politic,
        edulevel,
        religion,
        professionType,
        profession,
        workPlace,
        healthCondition,
        phone,
        livingWay,
        regionCode,
        address,
        // 补充信息
        household,
        householdAddress,
        // 本地户籍人口
        identification,
        houseId,
        householdType,
        ownerRelationship,
        ownerIdType,
        ownerIdCard,
        // 非本地户籍人口
        flowCause,
        flowDate,
        cardType,
        cardNumber,
        registerDate,
        expireDate,
        residenceType,
        // 境外来华停（居）留人员
        lastName,
        firstName,
        citizenship,
        purpose,
        arriveTime,
        leaveTime,
        // 房屋信息
        houseInfo
      }
    })
  }

  /**
   * @description: 人口更新
   * @author lsr
   * @date 2021.03.24
   * @param {String} personCode       人员编码
   * @param {String} residentType     人口管理类型
   * @param {String} personImage      图片url
   * @param {String} personName       姓名
   * @param {String} formerName       曾用名
   * @param {String} idType           证件类型
   * @param {String} idCard           证件号码
   * @param {String} sex              性别
   * @param {String} nationality      民族
   * @param {String} birthPlace       籍贯
   * @param {String} birthday         出生日期
   * @param {String} marriage         婚姻状况
   * @param {String} politic          政治面貌
   * @param {String} edulevel         文化程度/学历
   * @param {String} religion         宗教信仰
   * @param {String} professionType   职业类别
   * @param {String} profession       职业
   * @param {String} workPlace        工作单位
   * @param {String} healthCondition  健康情况
   * @param {String} phone            联系方式
   * @param {String} livingWay        居住方式
   * @param {String} regionCode       所属区域
   * @param {String} address          现住详址
   * 补充信息
   * @param {String} household        户籍地
   * @param {String} householdAddress 户籍详址
   * 补充信息 - 本地户籍人口
   * @param {String} identification   人户分离标识
   * @param {String} houseId          户号
   * @param {String} householdType    户口性质
   * @param {String} ownerRelationship        与户主关系
   * @param {String} ownerIdType              户主证件类型
   * @param {String} ownerIdCard              户主证件号
   * 补充信息 - 非本地户籍人口
   * @param {String} flowCause              流入原因
   * @param {String} flowDate              流入日期
   * @param {String} cardType              办证类型
   * @param {String} cardNumber              办证号码
   * @param {String} registerDate              办理日期
   * @param {String} expireDate              到期日期
   * @param {String} residenceType              住所类型
   * 补充信息 - 境外来华停（居）留人员
   * @param {String} lastName              外文姓
   * @param {String} firstName              外文名
   * @param {String} citizenship              国籍（地区）
   * @param {String} purpose              来华目的
   * @param {String} arriveTime              抵达日期
   * @param {String} leaveTime              预计离开日期
   * 房屋信息
   * @param {array} houseInfo           绑定房屋信息
   */
  residentUpdate({
    personCode,
    residentType,
    personImage,
    personName,
    formerName,
    idType,
    idCard,
    sex,
    nationality,
    birthPlace,
    birthday,
    marriage,
    politic,
    edulevel,
    religion,
    professionType,
    profession,
    workPlace,
    healthCondition,
    phone,
    livingWay,
    regionCode,
    address,
    // 补充信息
    household,
    householdAddress,
    // 本地户籍人口
    identification,
    houseId,
    householdType,
    ownerRelationship,
    ownerIdType,
    ownerIdCard,
    // 非本地户籍人口
    flowCause,
    flowDate,
    cardType,
    cardNumber,
    registerDate,
    expireDate,
    residenceType,
    // 境外来华停（居）留人员
    lastName,
    firstName,
    citizenship,
    purpose,
    arriveTime,
    leaveTime,
    // 房屋信息
    houseInfo
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/resident/update',
      data: {
        personCode,
        residentType,
        personImage,
        personName,
        formerName,
        idType,
        idCard,
        sex,
        nationality,
        birthPlace,
        birthday,
        marriage,
        politic,
        edulevel,
        religion,
        professionType,
        profession,
        workPlace,
        healthCondition,
        phone,
        livingWay,
        regionCode,
        address,
        // 补充信息
        household,
        householdAddress,
        // 本地户籍人口
        identification,
        houseId,
        householdType,
        ownerRelationship,
        ownerIdType,
        ownerIdCard,
        // 非本地户籍人口
        flowCause,
        flowDate,
        cardType,
        cardNumber,
        registerDate,
        expireDate,
        residenceType,
        // 境外来华停（居）留人员
        lastName,
        firstName,
        citizenship,
        purpose,
        arriveTime,
        leaveTime,
        // 房屋信息
        houseInfo
      }
    })
  }

  /**
   * @description: 人口审核
   * @author lsr
   * @date 2021.03.25
   * @param {String} personCode       人员编码
   * @param {String} residentType     人口管理类型
   * @param {String} personImage      图片url
   * @param {String} personName       姓名
   * @param {String} formerName       曾用名
   * @param {String} idType           证件类型
   * @param {String} idCard           证件号码
   * @param {String} sex              性别
   * @param {String} nationality      民族
   * @param {String} birthPlace       籍贯
   * @param {String} birthday         出生日期
   * @param {String} marriage         婚姻状况
   * @param {String} politic          政治面貌
   * @param {String} edulevel         文化程度/学历
   * @param {String} religion         宗教信仰
   * @param {String} professionType   职业类别
   * @param {String} profession       职业
   * @param {String} workPlace        工作单位
   * @param {String} healthCondition  健康情况
   * @param {String} phone            联系方式
   * @param {String} livingWay        居住方式
   * @param {String} regionCode       所属区域
   * @param {String} address          现住详址
   * 补充信息
   * @param {String} household        户籍地
   * @param {String} householdAddress 户籍详址
   * 补充信息 - 本地户籍人口
   * @param {String} identification   人户分离标识
   * @param {String} houseId          户号
   * @param {String} householdType    户口性质
   * @param {String} ownerRelationship        与户主关系
   * @param {String} ownerIdType              户主证件类型
   * @param {String} ownerIdCard              户主证件号
   * 补充信息 - 非本地户籍人口
   * @param {String} flowCause              流入原因
   * @param {String} flowDate              流入日期
   * @param {String} cardType              办证类型
   * @param {String} cardNumber              办证号码
   * @param {String} registerDate              办理日期
   * @param {String} expireDate              到期日期
   * @param {String} residenceType              住所类型
   * 补充信息 - 境外来华停（居）留人员
   * @param {String} lastName              外文姓
   * @param {String} firstName              外文名
   * @param {String} citizenship              国籍（地区）
   * @param {String} purpose              来华目的
   * @param {String} arriveTime              抵达日期
   * @param {String} leaveTime              预计离开日期
   * 房屋信息
   * @param {array} houseInfo           绑定房屋信息
   */
  residentApprove({
    personCode,
    residentType,
    personImage,
    personName,
    formerName,
    idType,
    idCard,
    sex,
    nationality,
    birthPlace,
    birthday,
    marriage,
    politic,
    edulevel,
    religion,
    professionType,
    profession,
    workPlace,
    healthCondition,
    phone,
    livingWay,
    regionCode,
    address,
    // 补充信息
    household,
    householdAddress,
    // 本地户籍人口
    identification,
    houseId,
    householdType,
    ownerRelationship,
    ownerIdType,
    ownerIdCard,
    // 非本地户籍人口
    flowCause,
    flowDate,
    cardType,
    cardNumber,
    registerDate,
    expireDate,
    residenceType,
    // 境外来华停（居）留人员
    lastName,
    firstName,
    citizenship,
    purpose,
    arriveTime,
    leaveTime,
    // 房屋信息
    houseInfo
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/resident/approve',
      data: {
        personCode,
        residentType,
        personImage,
        personName,
        formerName,
        idType,
        idCard,
        sex,
        nationality,
        birthPlace,
        birthday,
        marriage,
        politic,
        edulevel,
        religion,
        professionType,
        profession,
        workPlace,
        healthCondition,
        phone,
        livingWay,
        regionCode,
        address,
        // 补充信息
        household,
        householdAddress,
        // 本地户籍人口
        identification,
        houseId,
        householdType,
        ownerRelationship,
        ownerIdType,
        ownerIdCard,
        // 非本地户籍人口
        flowCause,
        flowDate,
        cardType,
        cardNumber,
        registerDate,
        expireDate,
        residenceType,
        // 境外来华停（居）留人员
        lastName,
        firstName,
        citizenship,
        purpose,
        arriveTime,
        leaveTime,
        // 房屋信息
        houseInfo
      }
    })
  }

  /**
   * @description: 人口详情
   * @date 2021.03.23
   * @param personCode 人员编码
   * @param baseType 数据类型
   * @param queryType 查询类型 1：更新  2：审核  3：采集
   */
  residentDetail({ personCode, baseType, queryType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/detail',
      params: {
        personCode,
        baseType,
        queryType
      }
    })
  }

  /**
   * @description: 党组织详情
   * @date 2021.03.23
   * @param partyOrganizationCode 人员编码
   */
  partyOrgDetail({ partyOrganizationCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/partyOrg/detail',
      params: {
        partyOrganizationCode
      }
    })
  }

  /**
   * @description: 人口驳回
   * @date 2021.03.25
   * @param personCode 人员编码
   * @param rejectReason 驳回原因
   */
  residentReject({ personCode, rejectReason }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/resident/reject',
      data: {
        personCode,
        rejectReason
      }
    })
  }

  /**
   * @description: 宠物采集
   * @author lsr
   * @date 2021.03.12
   * @param {String} petName 宠物名称
   * @param {String} petType 宠物品种
   * @param {String} petSex 宠物性别
   * @param {String} petColor 毛色
   * @param {String} petAge 宠物年龄
   * @param {String} vaccinationStatus 注射疫苗情况
   * @param {String} licence 许可证号
   * @param {String} issuedAuthority 发证机关
   * @param {String} issuedTime 发证日期
   * @param {String} regionCode 所属场所
   * @param {String} owner 主人姓名
   * @param {String} phone 主人联系方式
   * @param {String} idType 证件类型
   * @param {String} idCard 证件号码
   * @param {String} address 居住地址
   * @param {String} imageUrl 照片
   */
  petSave({
    petName,
    petType,
    petSex,
    petColor,
    petAge,
    vaccinationStatus,
    licence,
    issuedAuthority,
    issuedTime,
    regionCode,
    owner,
    phone,
    idType,
    idCard,
    address,
    imageUrl
  }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/approve/pet/save',
      data: {
        petName,
        petType,
        petSex,
        petColor,
        petAge,
        vaccinationStatus,
        licence,
        issuedAuthority,
        issuedTime,
        regionCode,
        owner,
        phone,
        idType,
        idCard,
        address,
        imageUrl
      }
    })
  }

  /**
   * @description: 宠物更新
   * @author lsr
   * @date 2021.03.24
   * @param {String} code 宠物编码
   * @param {String} petName 宠物名称
   * @param {String} petType 宠物品种
   * @param {String} petSex 宠物性别
   * @param {String} petColor 毛色
   * @param {String} petAge 宠物年龄
   * @param {String} vaccinationStatus 注射疫苗情况
   * @param {String} licence 许可证号
   * @param {String} issuedAuthority 发证机关
   * @param {String} issuedTime 发证日期
   * @param {String} regionCode 所属场所
   * @param {String} owner 主人姓名
   * @param {String} phone 主人联系方式
   * @param {String} idType 证件类型
   * @param {String} idCard 证件号码
   * @param {String} address 居住地址
   * @param {String} imageUrl 照片
   */
  petUpdate({
    code,
    petName,
    petType,
    petSex,
    petColor,
    petAge,
    vaccinationStatus,
    licence,
    issuedAuthority,
    issuedTime,
    regionCode,
    owner,
    phone,
    idType,
    idCard,
    address,
    imageUrl
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/pet/update',
      data: {
        code,
        petName,
        petType,
        petSex,
        petColor,
        petAge,
        vaccinationStatus,
        licence,
        issuedAuthority,
        issuedTime,
        regionCode,
        owner,
        phone,
        idType,
        idCard,
        address,
        imageUrl
      }
    })
  }

  /**
   * @description: 宠物审核
   * @author lsr
   * @date 2021.03.25
   * @param {String} code 宠物编码
   * @param {String} petName 宠物名称
   * @param {String} petType 宠物品种
   * @param {String} petSex 宠物性别
   * @param {String} petColor 毛色
   * @param {String} petAge 宠物年龄
   * @param {String} vaccinationStatus 注射疫苗情况
   * @param {String} licence 许可证号
   * @param {String} issuedAuthority 发证机关
   * @param {String} issuedTime 发证日期
   * @param {String} regionCode 所属场所
   * @param {String} owner 主人姓名
   * @param {String} phone 主人联系方式
   * @param {String} idType 证件类型
   * @param {String} idCard 证件号码
   * @param {String} address 居住地址
   * @param {String} imageUrl 照片
   */
  petApprove({
    code,
    petName,
    petType,
    petSex,
    petColor,
    petAge,
    vaccinationStatus,
    licence,
    issuedAuthority,
    issuedTime,
    regionCode,
    owner,
    phone,
    idType,
    idCard,
    address,
    imageUrl
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/pet/approve',
      data: {
        code,
        petName,
        petType,
        petSex,
        petColor,
        petAge,
        vaccinationStatus,
        licence,
        issuedAuthority,
        issuedTime,
        regionCode,
        owner,
        phone,
        idType,
        idCard,
        address,
        imageUrl
      }
    })
  }

  /**
   * @description: 宠物详情
   * @date 2021.03.24
   * @param code 宠物编码
   * @param queryType 查询类型 1：更新  2：审核  3：采集
   */
  petDetail({ code, queryType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/pet/detail',
      params: {
        code,
        queryType
      }
    })
  }

  /**
   * @description: 宠物驳回
   * @date 2021.03.25
   * @param code 宠物编码
   * @param rejectReason 驳回原因
   */
  petReject({ code, rejectReason }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/pet/reject',
      data: {
        code,
        rejectReason
      }
    })
  }

  /**
   * @description: 车辆采集
   * @author: lsr
   * @date: 2021.03.12
   * @param {String} placeCode 所属场所
   * @param {String} carNo 车牌号
   * @param {String} carType 车辆类型
   * @param {String} carColor 车身颜色
   * @param {String} carBrand 车辆品牌
   * @param {String} carProperty 车辆性质
   * @param {String} usedProperty 使用性质
   * @param {String} carModel 车辆型号
   * @param {String} plateColor 号牌颜色
   * @param {String} vehicleNumber 核定载人数
   * @param {String} owner 所有人
   * @param {String} ownerPhone 所有人联系方式
   * @param {String} ownerAddress 所有人地址
   * @param {String} residentName 持有人姓名
   * @param {String} phone 持有人联系方式
   * @param {String} idType 持有人证件类型
   * @param {String} idCard 持有人证件号码
   * @param {String} holderAddress 持有人居住地址
   * @param {String} companyImage 相关照片
   * @param {String} distircts 小区标识
   */
  carSave({
    placeCode,
    carNo,
    carType,
    carColor,
    carBrand,
    carProperty,
    usedProperty,
    carModel,
    plateColor,
    vehicleNumber,
    owner,
    ownerPhone,
    ownerAddress,
    residentName,
    phone,
    idType,
    idCard,
    holderAddress,
    companyImage,
    distircts = '01'
  }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/approve/car/save',
      data: {
        placeCode,
        carNo,
        carType,
        carColor,
        carBrand,
        carProperty,
        usedProperty,
        carModel,
        plateColor,
        vehicleNumber,
        owner,
        ownerPhone,
        ownerAddress,
        residentName,
        phone,
        idType,
        idCard,
        holderAddress,
        companyImage,
        distircts
      }
    })
  }

  /**
   * @description: 车辆更新
   * @author: lsr
   * @date: 2021.03.24
   * @param {String} carCode 车辆编码
   * @param {String} placeCode 所属场所
   * @param {String} carNo 车牌号
   * @param {String} carType 车辆类型
   * @param {String} carColor 车身颜色
   * @param {String} carBrand 车辆品牌
   * @param {String} carProperty 车辆性质
   * @param {String} usedProperty 使用性质
   * @param {String} carModel 车辆型号
   * @param {String} plateColor 号牌颜色
   * @param {String} vehicleNumber 核定载人数
   * @param {String} owner 所有人
   * @param {String} ownerPhone 所有人联系方式
   * @param {String} ownerAddress 所有人地址
   * @param {String} residentName 持有人姓名
   * @param {String} phone 持有人联系方式
   * @param {String} idType 持有人证件类型
   * @param {String} idCard 持有人证件号码
   * @param {String} holderAddress 持有人居住地址
   * @param {String} companyImage 相关照片
   */
  carUpdate({
    carCode,
    placeCode,
    carNo,
    carType,
    carColor,
    carBrand,
    carProperty,
    usedProperty,
    carModel,
    plateColor,
    vehicleNumber,
    owner,
    ownerPhone,
    ownerAddress,
    residentName,
    phone,
    idType,
    idCard,
    holderAddress,
    companyImage
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/car/update',
      data: {
        carCode,
        placeCode,
        carNo,
        carType,
        carColor,
        carBrand,
        carProperty,
        usedProperty,
        carModel,
        plateColor,
        vehicleNumber,
        owner,
        ownerPhone,
        ownerAddress,
        residentName,
        phone,
        idType,
        idCard,
        holderAddress,
        companyImage
      }
    })
  }

  /**
   * @description: 车辆审核
   * @author: lsr
   * @date: 2021.03.25
   * @param {String} carCode 车辆编码
   * @param {String} placeCode 所属场所
   * @param {String} carNo 车牌号
   * @param {String} carType 车辆类型
   * @param {String} carColor 车身颜色
   * @param {String} carBrand 车辆品牌
   * @param {String} carProperty 车辆性质
   * @param {String} usedProperty 使用性质
   * @param {String} carModel 车辆型号
   * @param {String} plateColor 号牌颜色
   * @param {String} vehicleNumber 核定载人数
   * @param {String} owner 所有人
   * @param {String} ownerPhone 所有人联系方式
   * @param {String} ownerAddress 所有人地址
   * @param {String} residentName 持有人姓名
   * @param {String} phone 持有人联系方式
   * @param {String} idType 持有人证件类型
   * @param {String} idCard 持有人证件号码
   * @param {String} holderAddress 持有人居住地址
   * @param {String} companyImage 相关照片
   * @param {String} distircts 小区标识
   */
  carApprove({
    carCode,
    placeCode,
    carNo,
    carType,
    carColor,
    carBrand,
    carProperty,
    usedProperty,
    carModel,
    plateColor,
    vehicleNumber,
    owner,
    ownerPhone,
    ownerAddress,
    residentName,
    phone,
    idType,
    idCard,
    holderAddress,
    companyImage,
    distircts = '01'
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/car/approve',
      data: {
        carCode,
        placeCode,
        carNo,
        carType,
        carColor,
        carBrand,
        carProperty,
        usedProperty,
        carModel,
        plateColor,
        vehicleNumber,
        owner,
        ownerPhone,
        ownerAddress,
        residentName,
        phone,
        idType,
        idCard,
        holderAddress,
        companyImage,
        distircts
      }
    })
  }

  /**
   * @description: 车辆详情
   * @date 2021.03.24
   * @param carCode 车辆编码
   * @param queryType 查询类型 1：更新  2：审核  3：采集
   */
  carDetail({ carCode, queryType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/car/detail',
      params: {
        carCode,
        queryType
      }
    })
  }

  /**
   * @description: 车辆驳回
   * @date 2021.03.25
   * @param carCode 车辆编码
   * @param rejectReason 驳回原因
   */
  carReject({ carCode, rejectReason }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/car/reject',
      data: {
        carCode,
        rejectReason
      }
    })
  }

  /**
   * @description: 房屋更新
   * @date 2021.03.25
   * @param {String} houseCode 房屋编码
   * @param {String} placeCode 所属场所
   * @param {String} buildCode 所属楼栋
   * @param {String} unitCode 所属单元
   * @param {String} floorCode 所属楼层
   * @param {String} houseName 房屋名称
   * @param {String} roomNo 房间号
   * @param {String} houseType 房屋类别
   * @param {String} houseState 房屋使用形式
   * @param {String} houseProperty 房屋性质
   * @param {String} houseNum 房间数
   * @param {String} houseArea 房屋面积
   * @param {String} remark 备注
   */
  houseUpdate({
    houseCode,
    placeCode,
    buildCode,
    unitCode,
    floorCode,
    houseName,
    roomNo,
    houseType,
    houseState,
    houseProperty,
    houseNum,
    houseArea,
    remark
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/house/update',
      data: {
        houseCode,
        placeCode,
        buildCode,
        unitCode,
        floorCode,
        houseName,
        roomNo,
        houseType,
        houseState,
        houseProperty,
        houseNum,
        houseArea,
        remark
      }
    })
  }

  /**
   * @description: 房屋详情
   * @date 2021.03.26
   * @param houseCode 房屋编码
   * @param queryType 查询类型 1：更新  2：审核  3：采集
   */
  houseDetail({ houseCode, queryType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/house/detail',
      params: {
        houseCode,
        queryType
      }
    })
  }

  /**
   * @description: 单位采集
   * @author: lsr
   * @date: 2021.03.15
   * @param {String} placeCode 所属小区
   * @param {String} buildCode 楼栋编码
   * @param {String} houseCode 房屋编码
   * @param {String} houseState 房屋使用类型
   * @param {String} expirationData 租住截止时间
   *
   * @param {String} companyName 单位名称
   * @param {String} companyType 单位类型
   * @param {String} businessScope 经营范围（主营）
   * @param {String} isLicense 是否有营业执照
   * @param {String} licenseNum 营业执照号
   * @param {String} phone 联系电话
   * @param {String} businessStatus 经营状态
   * @param {String} keyCompany 重点单位标识
   * @param {String} area 面积
   * @param {String} fireCtrlEquipmentDue 消防设备到期时间
   * @param {String} locationClassification 九小场所分类
   *
   * @param {String} legalPerson 法人代表
   * @param {String} legalPersonIdType 法人代表证件类型
   * @param {String} legalPersonIdCard 法定代表人证件号
   * @param {String} legalPersonPhone 法定代表人联系电话
   * @param {String} operator 实际经营人
   * @param {String} operatorIdType 实际经营人证件类型
   * @param {String} operatorIdCard 实际经营人证件号
   * @param {String} operatorPhone 实际经营人联系电话
   *
   * @param {String} companyImage 相关照片
   */
  companySave({
    placeCode,
    buildCode,
    houseCode,
    houseState,
    expirationData,
    companyName,
    companyType,
    businessScope,
    isLicense,
    licenseNum,
    phone,
    businessStatus,
    keyCompany,
    area,
    fireCtrlEquipmentDue,
    locationClassification,
    legalPerson,
    legalPersonIdType,
    legalPersonIdCard,
    legalPersonPhone,
    operator,
    operatorIdType,
    operatorIdCard,
    operatorPhone,
    companyImage
  }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/approve/company/save',
      data: {
        placeCode,
        buildCode,
        houseCode,
        houseState,
        expirationData,
        companyName,
        companyType,
        businessScope,
        isLicense,
        licenseNum,
        phone,
        businessStatus,
        keyCompany,
        area,
        fireCtrlEquipmentDue,
        locationClassification,
        legalPerson,
        legalPersonIdType,
        legalPersonIdCard,
        legalPersonPhone,
        operator,
        operatorIdType,
        operatorIdCard,
        operatorPhone,
        companyImage
      }
    })
  }

  /**
   * @description: 单位采集
   * @author: lsr
   * @date: 2021.04.12
   * @param {String} companyCode 单位编码
   * @param {String} placeCode 所属小区
   * @param {String} buildCode 楼栋编码
   * @param {String} houseCode 房屋编码
   * @param {String} houseState 房屋使用类型
   * @param {String} expirationData 租住截止时间
   *
   * @param {String} companyName 单位名称
   * @param {String} companyType 单位类型
   * @param {String} businessScope 经营范围（主营）
   * @param {String} isLicense 是否有营业执照
   * @param {String} licenseNum 营业执照号
   * @param {String} phone 联系电话
   * @param {String} businessStatus 经营状态
   * @param {String} keyCompany 重点单位标识
   * @param {String} area 面积
   * @param {String} fireCtrlEquipmentDue 消防设备到期时间
   * @param {String} locationClassification 九小场所分类
   *
   * @param {String} legalPerson 法人代表
   * @param {String} legalPersonIdType 法人代表证件类型
   * @param {String} legalPersonIdCard 法定代表人证件号
   * @param {String} legalPersonPhone 法定代表人联系电话
   * @param {String} operator 实际经营人
   * @param {String} operatorIdType 实际经营人证件类型
   * @param {String} operatorIdCard 实际经营人证件号
   * @param {String} operatorPhone 实际经营人联系电话
   *
   * @param {String} companyImage 相关照片
   */
  companyUpdate({
    companyCode,
    placeCode,
    buildCode,
    houseCode,
    houseState,
    expirationData,
    companyName,
    companyType,
    businessScope,
    isLicense,
    licenseNum,
    phone,
    businessStatus,
    keyCompany,
    area,
    fireCtrlEquipmentDue,
    locationClassification,
    legalPerson,
    legalPersonIdType,
    legalPersonIdCard,
    legalPersonPhone,
    operator,
    operatorIdType,
    operatorIdCard,
    operatorPhone,
    companyImage
  }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/approve/company/update',
      data: {
        companyCode,
        placeCode,
        buildCode,
        houseCode,
        houseState,
        expirationData,
        companyName,
        companyType,
        businessScope,
        isLicense,
        licenseNum,
        phone,
        businessStatus,
        keyCompany,
        area,
        fireCtrlEquipmentDue,
        locationClassification,
        legalPerson,
        legalPersonIdType,
        legalPersonIdCard,
        legalPersonPhone,
        operator,
        operatorIdType,
        operatorIdCard,
        operatorPhone,
        companyImage
      }
    })
  }

  /**
   * @description: 单位详情
   * @date 2021.04.12
   * @param companyCode 单位编码
   */
  companyDetail({ companyCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/company/detail',
      params: {
        companyCode
      }
    })
  }

  /** 统一社会信用代码判重
   * @author: cx
   * @date: 2021.11.19
   * @param {String} organizationCode 唯一编码
   * @param {String} licenseNum 统一号码
   */
  checkLicenseNum({ organizationCode, licenseNum }) {
    return this.request({
      method: 'get',
      url: '/smart/smart-app/organization/check',
      params: {
        organizationCode,
        licenseNum
      }
    })
  }

  /**
   * @description: 详情
   * @author cx
   * @date 2021.11.19
   * @param {String} organizationCode  数据唯一编码
   * @param {String} organizationType 企业/组织类别
   */
  organizationDetail({ organizationCode, organizationType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/organization/detail',
      params: { organizationCode, organizationType }
    })
  }

  /**
   * @description: 新增
   * @author cx
   * @date 2021.11.19
   * @param {String} regionLevel  所属层级
   * @param {String} regionCode 所属区域
   * @param {String} organizationType 组织类型
   * @param {String} licenseNum  工商执照注册号\r\n（统一社会信用代码）
   * @param {String} legalPersonName  法定代表人姓名
   * @param {String} insurancePersonName 治保负责人姓名
   * @param {String} insurancePersonPhone 治保负责人联系方式
   * @param {String} degreeConcern 关注程度
   * @param {String} establishPartyOrganization  是否具备建立中央党组织条件
   * @param {String} havePartyOrganization  是否有中共党组织
   * @param {String} partyPersonNum 中共党员数量
   * @param {String} haveUnion 是否有工会
   * @param {String} unionNum  工会会员数量
   * @param {String} haveCommunistYouthLeague 是否有共青团组织
   * @param {String} communistYouthNum 共青团团员数量
   * @param {String} haveFederationWomen 是否有妇联组织
   * @param {String} womenNum 妇女数量
   * @param {String} organizationCategory 企业类别/社会组织类别
   * @param {String} organizationName 企业名称/社会组织名称
   * @param {String} organizationAddress  企业地址/住所
   * @param {String} organizationPhone 企业联系方式
   * @param {String} organizationPersonNum  企业员工数
   * @param {String} legalIdType  法定代表人证件类型/负责人证件类型
   * @param {String} legalIdCard  法定代表人证件号码/负责人证件号码
   * @param {String} legalPhone   法定代表人联系方式/负责人联系方式
   * @param {String} dangerousEnterprises    是否危化企业
   * @param {String} potentialSafetyType 安全隐患类型
   * @param {String} registrationNo  登记证号
   * @param {String} registrationAuthority 登记管理机关
   * @param {String} officeAddress  办公地址
   * @param {String} approvalDate  批准日期
   * @param {String} certificateValidityDate  证书有效期
   * @param {String} registeredCapital  注册资金
   * @param {String} organizationStatus   状态
   * @param {String} latitudeLongitude  经纬度
   * @param {String} chargePersonName  负责人姓名
   * @param {String} sourceFunds  资金来源
   * @param {String} overseasBackground  是否有境外背景
   */

  saveData({
    regionLevel,
    regionCode,
    organizationType,
    licenseNum,
    legalPersonName,
    insurancePersonName,
    insurancePersonPhone,
    degreeConcern,
    establishPartyOrganization,
    havePartyOrganization,
    partyPersonNum,
    haveUnion,
    unionNum,
    haveCommunistYouthLeague,
    communistYouthNum,
    haveFederationWomen,
    womenNum,
    organizationCategory,
    organizationName,
    organizationAddress,
    organizationPhone,
    organizationPersonNum,
    legalIdType,
    legalIdCard,
    legalPhone,
    dangerousEnterprises,
    potentialSafetyType,
    registrationNo,
    registrationAuthority,
    officeAddress,
    approvalDate,
    certificateValidityDate,
    registeredCapital,
    organizationStatus,
    latitudeLongitude,
    chargePersonName,
    sourceFunds,
    overseasBackground
  }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/organization/save',
      data: {
        regionLevel,
        regionCode,
        organizationType,
        licenseNum,
        legalPersonName,
        insurancePersonName,
        insurancePersonPhone,
        degreeConcern,
        establishPartyOrganization,
        havePartyOrganization,
        partyPersonNum,
        haveUnion,
        unionNum,
        haveCommunistYouthLeague,
        communistYouthNum,
        haveFederationWomen,
        womenNum,
        organizationCategory,
        organizationName,
        organizationAddress,
        organizationPhone,
        organizationPersonNum,
        legalIdType,
        legalIdCard,
        legalPhone,
        dangerousEnterprises,
        potentialSafetyType,
        registrationNo,
        registrationAuthority,
        officeAddress,
        approvalDate,
        certificateValidityDate,
        registeredCapital,
        organizationStatus,
        latitudeLongitude,
        chargePersonName,
        sourceFunds,
        overseasBackground
      }
    })
  }
}

class UpdateApi extends HTTP {
  /**
   * @description: 居民基础信息更新列表
   * @author lsr
   * @date 2021.03.17
   * @param {String} configType 配置管理类型 1：长时间未更新 - 超时未更新  2：重复数据 - 重复率大于设置值
   * @param {String} baseType 数据类型 1：本地户籍人口 2：非本地户籍人口 3：境外人员 4：特殊人群 5：关爱人员 6：重点青少年 7：房屋信息 8：车辆信息 9：宠物信息 10：单位信息
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  list({ configType, baseType, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/list_update',
      params: {
        configType,
        baseType,
        recordSize,
        pageSize
      }
    })
  }

  /**
   * @description: 居民基础信息更新统计
   * @author lsr
   * @date 2021.03.26
   */
  count() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/count_update'
    })
  }
}

class AuditApi extends HTTP {
  /**
   * @description: 居民基础信息审核列表
   * @author lsr
   * @date 2021.03.17
   * @param {String} baseType 数据类型 1：本地户籍人口 2：非本地户籍人口 3：境外人员 4：特殊人群 5：关爱人员 6：重点青少年 7：房屋信息 8：车辆信息 9：宠物信息 10：单位信息
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  list({ baseType, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/list_approve',
      params: {
        baseType,
        recordSize,
        pageSize
      }
    })
  }

  /**
   * @description: 居民基础信息审核统计
   * @author lsr
   * @date 2021.03.26
   */
  count() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/approve/resident/count_approve'
    })
  }
}

class RecordApi extends HTTP {
  /**
   * @description: 居民基础信息记录列表
   * @author lsr
   * @date 2021.03.17
   * @param {String} recordType 记录类型 1：更新记录  2：审核记录  3：采集记录
   * @param {String} baseType 数据类型 1：本地户籍人口 2：非本地户籍人口 3：境外人员 4：特殊人群 5：关爱人员 6：重点青少年 7：房屋信息 8：车辆信息 9：宠物信息 10：单位信息
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  list({ recordType, baseType, recordSize, pageSize }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/approve/resident/list_record',
      data: {
        recordType,
        baseType,
        recordSize,
        pageSize
      }
    })
  }
}

class ResidentClass {
  constructor() {
    this.Init = new InitApi()
    this.BaseInfo = new BaseInfoApi()
    this.Update = new UpdateApi()
    this.Audit = new AuditApi()
    this.Record = new RecordApi()
  }
}

const Resident = new ResidentClass()

export default Resident
